import UIKit

@available(iOS 3.2, *)
extension QKC where AA :UISplitViewController {
    open func viewControllers_qk_s(_ viewControllers:  [UIViewController]) -> QKC<AA,YY,ZZ, [UIViewController]>{
		return link(next: viewControllers).then_QK { $0.value.viewControllers = viewControllers }
	}
    open func viewControllers_qk_g() -> QKC<AA,YY,ZZ, [UIViewController]>{
		 self +^ self.value.viewControllers
	}

     open func delegate_qk_s(_ delegate:  UISplitViewControllerDelegate?) -> QKC<AA,YY,ZZ, UISplitViewControllerDelegate?>{
		return link(next: delegate).then_QK { $0.value.delegate = delegate }
	}
     open func delegate_qk_g() -> QKC<AA,YY,ZZ, UISplitViewControllerDelegate?>{
		 self +^ self.value.delegate
	}

	// If 'YES', hidden view can be presented and dismissed via a swipe gesture. Defaults to 'YES'.
    @available(iOS 5.1, *)
    open func presentsWithGesture_qk_s(_ presentsWithGesture:  Bool) -> QKC<AA,YY,ZZ, Bool>{
		return link(next: presentsWithGesture).then_QK { $0.value.presentsWithGesture = presentsWithGesture }
	}
    @available(iOS 5.1, *)
    open func presentsWithGesture_qk_g() -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.presentsWithGesture
	}

	// Specifies whether the split view controller has collapsed its primary and secondary view controllers together
    @available(iOS 8.0, *)
    open func isCollapsed_qk_g() -> QKC<AA,YY,ZZ, Bool >{
		 self +^ self.value.isCollapsed
	}

	// An animatable property that controls how the primary view controller is hidden and displayed. A value of `UISplitViewControllerDisplayModeAutomatic` specifies the default behavior split view controller, which on an iPad, corresponds to an overlay mode in portrait and a side-by-side mode in landscape.
    @available(iOS 8.0, *)
    open func preferredDisplayMode_qk_s(_ preferredDisplayMode:  UISplitViewController.DisplayMode) -> QKC<AA,YY,ZZ, UISplitViewController.DisplayMode>{
		return link(next: preferredDisplayMode).then_QK { $0.value.preferredDisplayMode = preferredDisplayMode }
	}
    @available(iOS 8.0, *)
    open func preferredDisplayMode_qk_g() -> QKC<AA,YY,ZZ, UISplitViewController.DisplayMode>{
		 self +^ self.value.preferredDisplayMode
	}

	// The actual current displayMode of the split view controller. This will never return `UISplitViewControllerDisplayModeAutomatic`.
    @available(iOS 8.0, *)
    open func displayMode_qk_g() -> QKC<AA,YY,ZZ, UISplitViewController.DisplayMode >{
		 self +^ self.value.displayMode
	}

	// A system bar button item whose action will change the displayMode property depending on the result of targetDisplayModeForActionInSplitViewController:. When inserted into the navigation bar of the secondary view controller it will change its appearance to match its target display mode. When the target displayMode is PrimaryHidden, this will appear as a fullscreen button, for AllVisible or PrimaryOverlay it will appear as a Back button, and when it won't cause any action it will become hidden.
    @available(iOS 8.0, *)
    open func displayModeButtonItem_qk_g() -> QKC<AA,YY,ZZ, UIBarButtonItem >{
		 self +^ self.value.displayModeButtonItem
	}

	// An animatable property that can be used to adjust the relative width of the primary view controller in the split view controller. This preferred width will be limited by the maximum and minimum properties (and potentially other system heuristics).
		// default: UISplitViewControllerAutomaticDimension
    @available(iOS 8.0, *)
    open func preferredPrimaryColumnWidthFraction_qk_s(_ preferredPrimaryColumnWidthFraction:  CGFloat ) -> QKC<AA,YY,ZZ, CGFloat >{
		return link(next: preferredPrimaryColumnWidthFraction).then_QK { $0.value.preferredPrimaryColumnWidthFraction = preferredPrimaryColumnWidthFraction }
	}
    @available(iOS 8.0, *)
    open func preferredPrimaryColumnWidthFraction_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.preferredPrimaryColumnWidthFraction
	}

	// An animatable property that can be used to adjust the minimum absolute width of the primary view controller in the split view controller.
		// default: UISplitViewControllerAutomaticDimension
    @available(iOS 8.0, *)
    open func minimumPrimaryColumnWidth_qk_s(_ minimumPrimaryColumnWidth:  CGFloat ) -> QKC<AA,YY,ZZ, CGFloat >{
		return link(next: minimumPrimaryColumnWidth).then_QK { $0.value.minimumPrimaryColumnWidth = minimumPrimaryColumnWidth }
	}
    @available(iOS 8.0, *)
    open func minimumPrimaryColumnWidth_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.minimumPrimaryColumnWidth
	}

	// An animatable property that can be used to adjust the maximum absolute width of the primary view controller in the split view controller.
		// default: UISplitViewControllerAutomaticDimension
    @available(iOS 8.0, *)
    open func maximumPrimaryColumnWidth_qk_s(_ maximumPrimaryColumnWidth:  CGFloat ) -> QKC<AA,YY,ZZ, CGFloat >{
		return link(next: maximumPrimaryColumnWidth).then_QK { $0.value.maximumPrimaryColumnWidth = maximumPrimaryColumnWidth }
	}
    @available(iOS 8.0, *)
    open func maximumPrimaryColumnWidth_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.maximumPrimaryColumnWidth
	}

	// The current primary view controller's column width.
    @available(iOS 8.0, *)
    open func primaryColumnWidth_qk_g() -> QKC<AA,YY,ZZ, CGFloat >{
		 self +^ self.value.primaryColumnWidth
	}

	// The edge of the UISplitViewController where the primary view controller should be positioned
		// default: UISplitViewControllerPrimaryEdgeLeading
    @available(iOS 11.0, *)
    open func primaryEdge_qk_s(_ primaryEdge:  UISplitViewController.PrimaryEdge ) -> QKC<AA,YY,ZZ, UISplitViewController.PrimaryEdge >{
		return link(next: primaryEdge).then_QK { $0.value.primaryEdge = primaryEdge }
	}
    @available(iOS 11.0, *)
    open func primaryEdge_qk_g() -> QKC<AA,YY,ZZ, UISplitViewController.PrimaryEdge >{
		 self +^ self.value.primaryEdge
	}

	// The background style of the primary view controller.
    @available(iOS 13.0, *)
    open func primaryBackgroundStyle_qk_s(_ primaryBackgroundStyle:  UISplitViewController.BackgroundStyle) -> QKC<AA,YY,ZZ, UISplitViewController.BackgroundStyle>{
		return link(next: primaryBackgroundStyle).then_QK { $0.value.primaryBackgroundStyle = primaryBackgroundStyle }
	}
    @available(iOS 13.0, *)
    open func primaryBackgroundStyle_qk_g() -> QKC<AA,YY,ZZ, UISplitViewController.BackgroundStyle>{
		 self +^ self.value.primaryBackgroundStyle
	}

	// In a horizontally-regular environment this will set either the master or detail view controller depending on the original target. In a compact environment this defaults to a full screen presentation. In general the master or detail view controller will have implemented showViewController:sender: so this method would not be invoked.
    @available(iOS 8.0, *)
    open func show_qk_f(_ vc: UIViewController, sender: Any?) -> QKC<AA,YY,ZZ, UIViewController>{
		 self +^ self.value.show(vc, sender:sender) +^ vc
	}

	// In a horizontally-regular environment this will set the detail view controller unless it provided an implementation for showViewController:sender: in which case it will be called. In a horizontally-compact environment the master view controller or detail view controller is sent the showViewController:sender: message. If neither one of them provide an implementation for this method then it will fall back to a full screen presentation.
    @available(iOS 8.0, *)
    open func showDetailViewController_qk_f(_ vc: UIViewController, sender: Any?) -> QKC<AA,YY,ZZ, UIViewController>{
		 self +^ self.value.showDetailViewController(vc, sender:sender) +^ vc
	}

}

extension QKC where AA :UIViewController {
		// If the view controller has a split view controller as its ancestor, return it. Returns nil otherwise.
    open func splitViewController_qk_g() -> QKC<AA,YY,ZZ, UISplitViewController? >{
		 self +^ self.value.splitViewController
	}

    @available(iOS 8.0, *)
    open func collapseSecondaryViewController_qk_f(_ secondaryViewController: UIViewController, for splitViewController: UISplitViewController) -> QKC<AA,YY,ZZ, UIViewController>{
		 self +^ self.value.collapseSecondaryViewController(secondaryViewController, for:splitViewController) +^ secondaryViewController
	}

    @available(iOS 8.0, *)
    open func separateSecondaryViewController_qk_f(for splitViewController: UISplitViewController) -> QKC<AA,YY,ZZ,UIViewController?>{
		 self +^ self.value.separateSecondaryViewController(for:splitViewController)
	}

}

